//
//  XTWelcomeView.swift
//  MyBlog
//
//  Created by victor on 16/12/23.
//  Copyright © 2016年 victor. All rights reserved.
//

import UIKit
import SnapKit
import SDWebImage

///  欢迎视图
class XTWelcomeView: UIView {
    
    /// 欢迎界面背景图
    fileprivate lazy var adView: UIImageView = UIImageView(image: UIImage(named: "ad_background"))
    
    /// 头像图标
    fileprivate lazy var iconView: UIImageView = UIImageView(image: UIImage(named: "avatar_default_big"))
    
    /// 用户昵称
    fileprivate lazy var tipLabel: UILabel = UILabel.xt_label(text: "欢迎归来", fontSize: 17.0, color: UIColor.black)
    
    fileprivate var margin : CGFloat = 160
    fileprivate var moveMargin : CGFloat = 360

    override init(frame: CGRect) {
        super.init(frame: frame)
        
        tipLabel.alpha = 0
        tipLabel.sizeToFit()
        
        addSubview(adView)
        addSubview(iconView)
        addSubview(tipLabel)
        
        // url
        guard let urlString = XTNetWorkManger.shared.userAccount.avatar_large,
            let url = URL(string: urlString) else {
            return
        }
        
        // 设置头像 - 如果网络图像没有下载完成，先显示占位图像
        // 如果不指定占位图像，之前设置的图像会被清空！
        iconView.sd_setImage(with: url,
                             placeholderImage: UIImage(named: "avatar_default_big"))
        
        // 设置圆角(iconView的 bounds 还没有设置)
        iconView.layer.cornerRadius = iconView.bounds.width * 0.5
        iconView.layer.masksToBounds = true
    }
    
    required init?(coder aDecoder: NSCoder) {
        // 提示：initWithCode 只是刚刚从 XIB 的二进制文件将视图数据加载完成
        // 还没有和代码连线建立起关系，所以开发时，千万不要在这个方法中处理 UI
        fatalError("init(coder:) has not been implemented")
    }
    
    // 自动布局系统更新完成约束后，会自动调用此方法，通常是对子视图布局进行修改
    override func layoutSubviews() {
        super.layoutSubviews()
        
        // 取消autoresizing
        for v in subviews {
            v.translatesAutoresizingMaskIntoConstraints = false
        }
        
        adView.snp.makeConstraints { (make) in
            make.top.equalTo(self.snp.top)
            make.left.equalTo(self.snp.left)
            make.bottom.equalTo(self.snp.bottom)
            make.right.equalTo(self.snp.right)
        }
        
        iconView.snp.makeConstraints { (make) in
            make.centerX.equalTo(self.snp.centerX)
            make.width.equalTo(85)
            make.height.equalTo(85)
            make.bottom.equalTo(self.snp.bottom).offset(-margin)
        }
        
        tipLabel.snp.makeConstraints { (make) in
            make.centerX.equalTo(self.snp.centerX)
            make.top.equalTo(self.iconView.snp.bottom).offset(16)
        }
    }
    
    /// 视图被添加到 window 上，表示视图已经显示
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 视图是使用自动布局来设置的，只是设置了约束
        // - 当视图被添加到窗口上时，根据父视图的大小，计算约束值，更新控件位置
        // - layoutIfNeeded 会直接按照当前的约束直接更新控件位置
        // - 下面这句话执行之后，控件所在位置，就是当前初始布局的位置
        self.layoutIfNeeded()
        
        iconView.snp.updateConstraints { (make) in
            make.bottom.equalTo(self.snp.bottom).offset(-moveMargin)
        }
        
        // 如果控件们的 frame 还没有计算好！所有的约束会一起动画！
        UIView.animate(withDuration: 1.0,
                       delay: 0,
                       usingSpringWithDamping: 0.7, //弹力系数
                       initialSpringVelocity: 0, // 初始速度
                       options: [],
                       animations: { 
                        // 更新约束
                        self.layoutIfNeeded()
        }) { (_) in
            UIView.animate(withDuration: 1.0, animations: {
                self.tipLabel.alpha = 1
            }, completion: { (_) in
                self.removeFromSuperview()
            })
        }
    }

}
